From d971c4e69dbfa9c3b15b7699a3ebd78e5cefad74 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 25 Apr 2019 01:27:58 +0200 Subject: [PATCH] menu: Simplify function No need to do complicated math when we can just look at the allocation. --- gtk/gtkmenu.c | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index a4bc6be307..a0929d3cc7 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -3521,30 +3521,19 @@ compute_child_offset (GtkMenu *menu, gint *height) { GtkMenuPrivate *priv = menu->priv; - gint item_top_attach; - gint child_offset = 0; - gint i; - - get_effective_child_attach (menu_item, &item_top_attach); - - /* there is a possibility that we get called before _size_request, - * so check the height table for safety. - */ - if (!priv->heights || priv->heights_length < gtk_menu_get_n_rows (menu)) - return FALSE; - - /* when we have a row with only invisible children, its height will - * be zero, so there's no need to check WIDGET_VISIBLE here - */ - for (i = 0; i < item_top_attach; i++) - child_offset += priv->heights[i]; + GtkAllocation allocation; - if (offset) - *offset = child_offset; - if (height) - *height = priv->heights[item_top_attach]; + gtk_widget_get_allocation (menu_item, &allocation); + if (allocation.width > 0) + { + if (offset) + *offset = allocation.y + priv->scroll_offset; + if (height) + *height = allocation.height; + return TRUE; + } - return TRUE; + return FALSE; } static void -- 2.30.2